package com.congwulin.wechat.mapper;

import com.congwulin.wechat.entity.Station;
import com.congwulin.wechat.sql.StationSqlProvider;
import org.apache.ibatis.annotations.*;

import java.util.List;

public interface StationTestMapper {
    /**
     * 方式1：使用注解编写SQL。
     */
    @Select("select * from station")
    List<Station> list();

    /**
     * 方式2：使用注解指定某个工具类的方法来动态编写SQL.
     */
    @SelectProvider(type= StationSqlProvider.class,method = "listByName")
    List<Station> listByName(String name);

    /**
     * 延伸：上述两种方式都可以附加@Results注解来指定结果集的映射关系.
     *
     * PS：如果符合下划线转驼峰的匹配项可以直接省略不写。
     */
    @Results({
            @Result(property = "id", column = "ID"),
            @Result(property = "name", column = "NAME"),
            @Result(property = "code", column = "CODE"),
            @Result(property = "codesimple", column = "CODESIMPLE")
    })
    @Select("select * from station")
    List<Station> listSample();

    /**
     * 延伸：无论什么方式,如果涉及多个参数,则必须加上@Param注解,否则无法使用EL表达式获取参数。
     */
    @Select("select * from station where name like #{name} and code like #{code}")
    Station get(@Param("name") String name, @Param("code") String code);

    @SelectProvider(type = StationSqlProvider.class, method = "getStation")
    Station getStation(@Param("name") String name, @Param("code") String code);
}
